昨天已經成功抓取到資料之後,我們就可以拿抓取的資料來製作一個股票的線圖!
首先,前面的連接資料庫跟更新日期的函數就不多說了,忘記的話可以去看上一篇,
這段程式碼計算出當前日期和五個月前的日期,並將其格式化為字串。下面的def date_range(beginDate, endDate):
這個函數生成從 beginDate 到 endDate 之間的所有日期,並返回一個日期列表。
在這裡,它用來生成從五個月前到今天之間的日期範圍。
這行的意思是從資料庫中提取開盤日期,執行 SQL 查詢來獲取從資料庫中指定區間內的股票開盤日期。
把查詢結果中每個開盤日期轉換為字串格式,並儲存在 list_date 中。
再來用集合運算找出所有日期和 list_date之間的差集,這就是非開盤日 ex:假日或著是國定假日。
如果沒有做這個步驟的話,呈現出來的圖案也會計算到假日的部分,看起來就不太整齊,所以我們多一個判斷,把假日的部分都刪除掉。
這個 SQL 查詢從資料庫中獲取股票代號為 "2330",後面的日期是可以設定的,這邊先用2022年內的所有股票交易數據代替,並存入 DataFrame df。
再來就是最主要:畫圖的部分
第一步:fig = make_subplots(specs=[[{"secondary_y": True}]])
make_subplots()這個函數用來創建子圖(subplot)。specs 參數定義了子圖的配置,這裡使用的是一個單一的圖表,但它允許第二個 Y 軸(secondary_y=True)。這樣可以在一個圖表中繪製兩種不同的數據
再來這段程式碼繪製了股票的綜合分析圖表,包含蠟燭圖來顯示每日的開盤、最高、最低、收盤價格,並且繪製了 5 日、20 日、60 日的移動平均線來展示價格趨勢。此外,還顯示每日的成交量,並利用篩選排除非開盤日期,讓圖表僅顯示有交易的日期。這能幫助我們更清晰地觀察股票走勢與交易行為。
再來就是展示成果啦~
可以看到,我們多了去除假日的功能,讓整個線圖看起來更整齊了。
今天完成了話蠟燭圖之後,就到這邊告一個段落,明天繼續其他功能!